package com.sugon.modules.mold.model.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.sugon.modules.mold.consts.MoldState;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 模具健康状态数据VO
 * 目前主要用于模具概览页，封装模具类别和模具信息
 *
 * @author ： YuXD
 * @description： 模具健康状态VO
 * @date ： 2021-03-19 下午 2:13
 * @version: 1.0
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
public class MoldHealthyStatusVO implements Serializable {

    /**
     * 模具类别ID或模具ID
     */
    private String id;

    /**
     * 上级ID
     */
    private String parentId;

    /**
     * 模具类别编码或模具号
     */
    private String code;

    /**
     * 模具类别名称或模具名称
     */
    private String name;

    /**
     * 模具状态
     */
    private Integer moldStatus;

    /**
     * 镶块使用次数
     */
    private Integer useNo;

    /**
     * 镶块寿命标准
     */
    private Integer lifeStandard;

    /**
     * 模具系列编码
     */
    private String moduleSeries;

    /**
     * 模具总数
     */
    private int totalNum = 0;

    /**
     * 可用模具总数 = 模具总数-模具报废-镶块报废-封存-外借
     */
    private long availableNum = 0;

    private List<MoldHealthyStatusVO> children;

    /***********************以下字段计算而来*******************************/

    /**
     * 模具页面码：只有模具时可用
     * 组成：模具系列 + 数据(模具号最后的数字)
     * NE14-1、NE14/15-1（系列编码+模具号，模具号指最后一个-后的字符）
     */
    private String moldPageCode;

    public String getMoldPageCode() {
        String prefix = moduleSeries;
        if (prefix == null) {
            prefix = "";
        }
        // 取模具号最后一个"-"后的内容
        String code = getCode();
        int lastIndexOf = code.lastIndexOf("-");
        return prefix + (lastIndexOf != -1 ? code.substring(lastIndexOf) : code);
    }

    /**
     * 模具状态描述
     */
    private String moldStatusDesc;

    public String getMoldStatusDesc() {
        if (moldStatus == null) {
            return null;
        }
        return MoldState.values()[moldStatus - 1].getDesc();
    }
}
